var FormiCheck = function () {
    return {
        //main function to initiate the module
        init: function () {

            $('.icheck-colors li').click(function () {
                var self = $(this);

                if (!self.hasClass('active')) {
                    self.siblings().removeClass('active');

                    var skin = self.closest('.skin'),
                        color = self.attr('class') ? '-' + self.attr('class') : '',
                        colorTmp = skin.data('color') ? '-' + skin.data('color') : '-grey',
                        colorTmp = (colorTmp === '-black' ? '' : colorTmp);

                    checkbox_default = 'icheckbox_minimal',
                        radio_default = 'iradio_minimal',
                        checkbox = 'icheckbox_minimal' + colorTmp,
                        radio = 'iradio_minimal' + colorTmp;

                    if (skin.hasClass('skin-square')) {
                        checkbox_default = 'icheckbox_square';
                        radio_default = 'iradio_square';
                        checkbox = 'icheckbox_square' + colorTmp;
                        radio = 'iradio_square' + colorTmp;
                    }
                    ;

                    if (skin.hasClass('skin-flat')) {
                        checkbox_default = 'icheckbox_flat';
                        radio_default = 'iradio_flat';
                        checkbox = 'icheckbox_flat' + colorTmp;
                        radio = 'iradio_flat' + colorTmp;
                    }
                    ;

                    if (skin.hasClass('skin-line')) {
                        checkbox_default = 'icheckbox_line';
                        radio_default = 'iradio_line';
                        checkbox = 'icheckbox_line' + colorTmp;
                        radio = 'iradio_line' + colorTmp;
                    }
                    ;

                    skin.find('.icheck').each(function () {
                        var element = $(this).hasClass('state') ? $(this) : $(this).parent();
                        var element_class = element.attr('class').replace(checkbox, checkbox_default + color).replace(radio, radio_default + color);
                        element.attr('class', element_class);
                    });

                    skin.data('color', self.attr('class') ? self.attr('class') : 'black');
                    self.addClass('active');
                }
                ;
            });
        }
    };
}();

jQuery(document).ready(function () {
    FormiCheck.init();
});